/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package banco_imobiliario.control;

import banco_imobiliario.model.*;
import banco_imobiliario.view.Carregando;
import banco_imobiliario.view.LogoMarcas;
import banco_imobiliario.view.SelecionarJogadoresUI;
import banco_imobiliario.view.TabuleiroUI;
import java.util.List;

/**
 *
 * @author Andre
 */
public class ControladorInterface {

    ControladorBancoImobiliario controlBancoImobiliario = ControladorBancoImobiliario.getInstancia();
    public static ControladorInterface instancia;

    protected ControladorInterface() {
    }

    public static ControladorInterface getInstancia() {
        //Implementação do Singleton
        if (instancia == null) {
            instancia = new ControladorInterface();
        }
        return instancia;
    }

    public void iniciaUI() {

        LogoMarcas logo = new LogoMarcas();
        logo.setVisible(true);
    }

    public void iniciarEscolhaDePersonagens() {

        SelecionarJogadoresUI telaJogadores = new SelecionarJogadoresUI();
        telaJogadores.setVisible(true);
    }

    public void estabeleceConfiguracoes(boolean TirarDuplasNosDadosJogaNovamente, boolean Tirar3DuplasSeguidasVaiPraPrisão, boolean GerarValoresDosDadosAleatoriamente, int PontoDePartidaRepoe) {
        /*
         * Chama o controlado de banco e atribui as configurações;
         */
        controlBancoImobiliario.setConfiguracoes(TirarDuplasNosDadosJogaNovamente, Tirar3DuplasSeguidasVaiPraPrisão, GerarValoresDosDadosAleatoriamente, PontoDePartidaRepoe);
    }

    public void criaDoisJogadores(String nome, int dinheiro, String imgTabuleiro, String imgInformacao, String nomeJog2, int dinheiroJog2, String imgTabuleiroJog2, String imgInformacaoJog2) {


        //instanciando jogador um
        Jogador jogadorUm = new Jogador();
        jogadorUm.setNome(nome);
        jogadorUm.setDinheiro(dinheiro);
        Peca pecaJogadorUm = new Peca();
        pecaJogadorUm.setLocalImagemTabuleiro(imgTabuleiro);
        pecaJogadorUm.setLocalImagemInformacao(imgInformacao);

        jogadorUm.setPeca(pecaJogadorUm);

        //Intanciando jogador dois.
        Jogador jogadorDois = new Jogador();
        jogadorDois.setNome(nomeJog2);
        jogadorDois.setDinheiro(dinheiroJog2);
        Peca pecaJogadorDois = new Peca();
        pecaJogadorDois.setLocalImagemTabuleiro(imgTabuleiroJog2);
        pecaJogadorDois.setLocalImagemInformacao(imgInformacaoJog2);

        jogadorDois.setPeca(pecaJogadorDois);

        controlBancoImobiliario.adicionarJogador(jogadorUm);
        controlBancoImobiliario.adicionarJogador(jogadorDois);
    }

    public void criaTresJogadores(String nome, int dinheiro, String imgTabuleiro, String imgInformacao, String nomeJog2, int dinheiroJog2, String imgTabuleiroJog2, String imgInformacaoJog2, String nomeJog3, int dinheiroJog3, String imgTabuleiroJog3, String imgInformacaoJog3) {
        /*
         * Chama o controlador de jogadors e cria os metodos
         */
        //instanciando jogador um
        Jogador jogadorUm = new Jogador();
        jogadorUm.setNome(nome);
        jogadorUm.setDinheiro(dinheiro);
        Peca pecaJogadorUm = new Peca();
        pecaJogadorUm.setLocalImagemTabuleiro(imgTabuleiro);
        pecaJogadorUm.setLocalImagemInformacao(imgInformacao);
        jogadorUm.setPeca(pecaJogadorUm);

        //Intanciando jogador dois.
        Jogador jogadorDois = new Jogador();
        jogadorDois.setNome(nomeJog2);
        jogadorDois.setDinheiro(dinheiroJog2);
        Peca pecaJogadorDois = new Peca();
        pecaJogadorDois.setLocalImagemTabuleiro(imgTabuleiroJog2);
        pecaJogadorDois.setLocalImagemInformacao(imgInformacaoJog2);
        jogadorDois.setPeca(pecaJogadorDois);

        //Intanciando jogador tres.
        Jogador jogadorTres = new Jogador();
        jogadorTres.setNome(nomeJog3);
        jogadorTres.setDinheiro(dinheiroJog3);
        Peca pecaJogadorTres = new Peca();
        pecaJogadorTres.setLocalImagemTabuleiro(imgTabuleiroJog3);
        pecaJogadorTres.setLocalImagemInformacao(imgInformacaoJog3);
        jogadorTres.setPeca(pecaJogadorTres);

        controlBancoImobiliario.adicionarJogador(jogadorUm);
        controlBancoImobiliario.adicionarJogador(jogadorDois);
        controlBancoImobiliario.adicionarJogador(jogadorTres);
    }

    public void criaQuatroJogadores(String nome, int dinheiro, String imgTabuleiro, String imgInformacao, String nomeJog2, int dinheiroJog2, String imgTabuleiroJog2, String imgInformacaoJog2, String nomeJog3, int dinheiroJog3, String imgTabuleiroJog3, String imgInformacaoJog3, String nomeJog4, int dinheiroJog4, String imgTabuleiroJog4, String imgInformacaoJog4) {
        /*
         * Chama o controlador de jogadors e cria os metodos
         */
        //instanciando jogador um
        Jogador jogadorUm = new Jogador();
        jogadorUm.setNome(nome);
        jogadorUm.setDinheiro(dinheiro);
        Peca pecaJogadorUm = new Peca();
        pecaJogadorUm.setLocalImagemTabuleiro(imgTabuleiro);
        pecaJogadorUm.setLocalImagemInformacao(imgInformacao);
        jogadorUm.setPeca(pecaJogadorUm);

        //Intanciando jogador dois.
        Jogador jogadorDois = new Jogador();
        jogadorDois.setNome(nomeJog2);
        jogadorDois.setDinheiro(dinheiroJog2);
        Peca pecaJogadorDois = new Peca();
        pecaJogadorDois.setLocalImagemTabuleiro(imgTabuleiroJog2);
        pecaJogadorDois.setLocalImagemInformacao(imgInformacaoJog2);
        jogadorDois.setPeca(pecaJogadorDois);

        //Intanciando jogador tres.
        Jogador jogadorTres = new Jogador();
        jogadorTres.setNome(nomeJog3);
        jogadorTres.setDinheiro(dinheiroJog3);
        Peca pecaJogadorTres = new Peca();
        pecaJogadorTres.setLocalImagemTabuleiro(imgTabuleiroJog3);
        pecaJogadorTres.setLocalImagemInformacao(imgInformacaoJog3);
        jogadorTres.setPeca(pecaJogadorTres);

        //Intanciando jogador tres.
        Jogador jogadorQuatro = new Jogador();
        jogadorQuatro.setNome(nomeJog4);
        jogadorQuatro.setDinheiro(dinheiroJog4);
        Peca pecaJogadorQuatro = new Peca();
        pecaJogadorQuatro.setLocalImagemTabuleiro(imgTabuleiroJog4);
        pecaJogadorQuatro.setLocalImagemInformacao(imgInformacaoJog4);
        jogadorQuatro.setPeca(pecaJogadorQuatro);

        controlBancoImobiliario.adicionarJogador(jogadorUm);
        controlBancoImobiliario.adicionarJogador(jogadorDois);
        controlBancoImobiliario.adicionarJogador(jogadorTres);
        controlBancoImobiliario.adicionarJogador(jogadorQuatro);
    }

    public void iniciarTabuleiro() {
        TabuleiroUI tab = new TabuleiroUI();
        tab.setVisible(true);
    }

    public void inciarCarregando() {
        Carregando carregando = new Carregando();
        carregando.setVisible(true);
    }

    public List<Jogador> retornaJogadores() {
        return controlBancoImobiliario.retornarJogadores();
    }

    public int estabeleceLocalizacao(int valorDadoUM, int valorDadoDois, Jogador jogadorDaVez) {
        controlBancoImobiliario = ControladorBancoImobiliario.getInstancia();
        Dado dadoUm = new Dado();
        dadoUm.setValorDaFace(valorDadoUM);
        Dado dadoDois = new Dado();
        dadoDois.setValorDaFace(valorDadoDois);
        jogadorDaVez.setDado1(dadoUm);
        jogadorDaVez.setDado2(dadoDois);
        controlBancoImobiliario.estabelecerLocalizacaoJogador(jogadorDaVez, dadoUm, dadoDois);
        return valorDadoUM + valorDadoDois;
    }

    public void estabelecerJogadorDaVez(Jogador jogador) {
        controlBancoImobiliario.estebelecerJogadorDaVez(jogador);
    }

    public void mostrarNoticia(Noticia Carta) {
        TabuleiroUI tabuleiro = new TabuleiroUI();
        tabuleiro.mostrarNoticia(Carta);
    }

    public void debitarJogadorDaVez(Jogador jogador, double valor) {
        controlBancoImobiliario.debitarJogadorDaVez(jogador, valor);
    }

    void comprarLogradouro(Logradouro aThis) {
        TabuleiroUI tabuleiro = new TabuleiroUI();
        tabuleiro.comprarLogradouro(aThis);
    }

    public void comprarLogradouro(Jogador jogadorDaVez) {
        controlBancoImobiliario.comprarLogradouro(jogadorDaVez);
    }

    public void mostraProprietario() {
        controlBancoImobiliario.mostraProprietario();
    }

    public List<Logradouro> retornaPropriedades(Jogador jogador) {
        return controlBancoImobiliario.retornaPropriedades(jogador);
    }

    public Jogador retornaJogadorDaVez() {
        return controlBancoImobiliario.retornaJogadorDaVez();
    }
}
